נלמד איך להתקין ולהגדיר שרת nginx כfrontend לapache, על דביאן.
מגדירים Nginx כFrontend לApache
בשביל לעשות אופטימיזציה לשרת שלנו (לחסוך במשאבים והגברת מהירות השרת) כאן נלמד
איך להתקין שרת Nginx שישמש כFrontned לApache.
לצורך המחשה הינה הבדלים בין עבודה של Apache בלבד לעבודה של Apache וNgnix ביחד:
מהירות טעינה - http://www.opennet.ru/base/net/nginx_frontend_apache1.gif
CPU - http://www.opennet.ru/base/net/nginx_frontend_apache2.gif
זיכרון - http://www.opennet.ru/base/net/nginx_frontend_apache3.gif
ככה זה פחות או יותר איך זה מבוצע:
HTTP Client ----> Front-End (nginx) ----> Back-End (apache)
----------- <---- ----------------- <---- -----------------
1.2.3.4:80 127.0.0.1:80 127.0.0.1:8080
Credit to DebianWorld.ru
----------- <---- ----------------- <---- -----------------
1.2.3.4:80 127.0.0.1:80 127.0.0.1:8080
Credit to DebianWorld.ru
לפני שנתחיל..
- זה מיוחס רק לדביאן.
נכנס לפה - http://www.dotdeb.org/instructions/ , נוסיף 2 שורות שכתובות בעמוד לקובץ /etc/apt/resources.list לפי גירסאת הדביאן שלנו (Lenny = 5, Squeeze = 6), נוריד את הקובץ key, נוסיף אותו למנהל החבילות שלנו (apt), ונעדכן ע"י כתיבת הפקודה apt-get update,
ולאחר מכן apt-get dist-upgrade
לעבודה
נתקין Nginx:
apt-get install nginx
לבינתיים נעזוב את Nginx.
נלך לתיקייה של Apache:
cd /etc/apache2
שם קודם נערוך את קובץ ports.conf
nano ports.conf
שם נראה את השורה Listen 80, נשנה אותה ל: Listen 8080
כמו כן, נראה שורה שנראת בסגנון NameVirtualHost *:80,
נשנה ל: NameVirtualHost *:8080
לאחר מכן, נלך לתיקייה sites-available
cd sites-available
שם נערוך את הקובץ vhosts שלנו (אם אתם לא יודעים במה מדובר, סביר להניח שכבחירת מחדל הקובץ שלכם הוא default, אחרת תערכו את הקובץ שלכם)
nano default
נשנה כל VirtualHost *:80 ל VirtualHost *:8080, כלומר שהפורט ישתנה מ80 ל8080.
אחרי שסיימנו עם זה, נעשה ריסטרט לאפאצ'י:
/etc/init.d/apache2 restart
סיימנו עם האפאצ'י.
נחזור לNginx:
cd /etc/nginx
ניצור קובץ בשם proxy.conf ונערוך אותו:
touch proxy.conf
nano proxy.conf
nano proxy.conf
ונכניס לשם את התוכן הבא:
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
נערוך את הקובץ nginx.conf
nano nginx.conf
נחפש שם את השורה: "http {", נחפש את הסוגר של הסוגריים המסולסלות ושורה לפני זה
נכתוב:
server {
listen YourIP:80;
server_name www.$hostname $hostname;
location / {
proxy_pass http://YourIP/;
include /etc/nginx/proxy.conf;
}
location /*\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js)$ {
root /location/to/web/files;
}
}
listen YourIP:80;
server_name www.$hostname $hostname;
location / {
proxy_pass http://YourIP/;
include /etc/nginx/proxy.conf;
}
location /*\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js)$ {
root /location/to/web/files;
}
}
כשאר YourIP זה האיפי של השרת שלכם. כמו כן, לא לשכוח לשנות את הroot לכתובת של הקבצי אתר שלכם.
נעשה ריסטרט:
/etc/init.d/nginx restart
/etc/init.d/apache2 restart
/etc/init.d/apache2 restart
--עדכון--
כרגע, אחרי כל מה שעשינו עכשיו, הכל כבר מוכן.
אך הNGINX עדיין יעשה לנו כמה בעיות כשהוא שולח האדרים לאפאצ'י.
אחת הבעיות היא שהREMOTE_ADDR הוא האיפי של השרת במקום האיפי של הקליינט.
בשביל לסדר את זה, אנחנו נתקין rpah mod
ההתקנה (לדביאן):
aptitude install libapache2-mod-rpaf
אחרי שהתקנו, אנחנו עורכים את הקובץ של ההגדרות שלו:
nano /etc/apache2/mods-enabled/rpaf.conf
מוחקים הכל ומעתיקים לשם את זה:
<IfModule mod_rpaf.c>
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 YourIP 192.138.0.1
</IfModule>
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 YourIP 192.138.0.1
</IfModule>
כאשר YourIP, זה האיפי של השרת שלכם.
לאחר מכן כותבים את זה:
apache2ctl graceful
service apache2 restart
service nginx restart
service apache2 restart
service nginx restart
וסיימנו.
תגובות של שאלות, בעיות, או סתם תודה אתם מוזמנים להגיב :-)
תגובות לכתבה:
לי אישית היה חסר לפחות משהו קצר בהתחלה שיסביר למה כדאי בכלל לעשות את זה
בתור מדריך טכני - יצא מעולה.
עבור windows הכל דומה מבחינת הגדרות למאט מיקומי הקבצים ואופן ההתקנה.
תודה מיכאל :)
HTTP Client)
------------
1.2.3.4:80
אתה טועה, החיבור מצד הקליינט מתבצע דרך פורט רנדומלי
תודה על הערה.
לא שזה עקרוני לכתבה ומובא מ debianword.ru
אבל כל הכבוד על העין החדה :)
כרגע בדקתי, וצודק. אכן הפורט רנדומלי.
אבל הדוגמא רק להמחשה איך הפעולה מתבצעת, אז כמו 1.2.3.4 זה האיפי שלך אז גם פורט 80 זה רק לדוגמא.
אכן הפורט הוא רנדומלי.